{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 线性回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch as t\n",
    "from matplotlib import pyplot as plt\n",
    "from IPython import display"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<torch._C.Generator at 0x1136b8cb0>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "t.manual_seed(1000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_fake_data(batch_size=8):\n",
    "    x=t.rand(batch_size,1)*20\n",
    "    y=x*2+(1+t.randn(batch_size,1))*3\n",
    "    return x,y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x116536828>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x,y=get_fake_data()\n",
    "plt.scatter(x.squeeze().numpy(),y.squeeze().numpy())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(\n",
       "  0.6660\n",
       " [torch.FloatTensor of size 1x1], \n",
       "  0\n",
       " [torch.FloatTensor of size 1x1])"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "w=t.rand(1,1)\n",
    "b=t.zeros(1,1)\n",
    "w,b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "lr=0.001"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.0083751678466797 3.0900111198425293\n",
      "2.195256233215332 3.1024985313415527\n",
      "1.7265034914016724 3.0704615116119385\n",
      "1.8002249002456665 3.072118043899536\n",
      "2.2576818466186523 3.111124038696289\n",
      "1.5786559581756592 3.0699117183685303\n",
      "2.144951343536377 3.1092212200164795\n",
      "1.946480631828308 3.0864596366882324\n",
      "2.1468350887298584 3.096419334411621\n",
      "2.02947998046875 3.0893757343292236\n",
      "1.913997769355774 3.080704927444458\n",
      "2.0529298782348633 3.090043783187866\n",
      "1.8451857566833496 3.07730770111084\n",
      "2.076023578643799 3.0891239643096924\n",
      "1.7798265218734741 3.0664243698120117\n",
      "1.8800392150878906 3.074831485748291\n",
      "1.8985443115234375 3.0829904079437256\n",
      "2.261428117752075 3.106964349746704\n",
      "1.9762380123138428 3.0796353816986084\n",
      "2.158198356628418 3.0867373943328857\n",
      "2.0390868186950684 3.080206871032715\n",
      "1.9085030555725098 3.0687413215637207\n",
      "2.0590944290161133 3.0822927951812744\n",
      "1.900923252105713 3.0614209175109863\n",
      "1.9129289388656616 3.062269687652588\n",
      "2.080190658569336 3.0745229721069336\n",
      "1.951957106590271 3.0593132972717285\n",
      "1.995766520500183 3.060164213180542\n",
      "2.0528995990753174 3.063049554824829\n",
      "2.1095433235168457 3.0656144618988037\n",
      "2.059000015258789 3.059983730316162\n",
      "2.09371280670166 3.0602099895477295\n",
      "1.9544012546539307 3.058985471725464\n",
      "2.054093360900879 3.0603065490722656\n",
      "2.0173137187957764 3.0575761795043945\n",
      "1.9825621843338013 3.062960386276245\n",
      "2.115764617919922 3.0758485794067383\n",
      "1.9600403308868408 3.056413412094116\n",
      "2.217698097229004 3.0795652866363525\n",
      "1.8618987798690796 3.047874689102173\n",
      "2.00927996635437 3.05452299118042\n",
      "2.012789726257324 3.052727222442627\n",
      "1.8606183528900146 3.044086456298828\n",
      "2.057676076889038 3.0536906719207764\n",
      "1.8603357076644897 3.036954641342163\n",
      "2.0151267051696777 3.0512280464172363\n",
      "1.9666131734848022 3.0467333793640137\n",
      "1.9862154722213745 3.0559589862823486\n",
      "1.9542577266693115 3.0508809089660645\n",
      "2.063518762588501 3.062485694885254\n",
      "2.09969425201416 3.0711028575897217\n",
      "1.830625295639038 3.050055980682373\n",
      "2.0719761848449707 3.071428060531616\n",
      "2.1014294624328613 3.0662920475006104\n",
      "1.9992079734802246 3.0557289123535156\n",
      "2.0342459678649902 3.0582191944122314\n",
      "2.0765528678894043 3.0585992336273193\n",
      "1.9565141201019287 3.0526952743530273\n",
      "1.979710340499878 3.050732374191284\n",
      "1.9892634153366089 3.055915355682373\n",
      "1.9776926040649414 3.0507826805114746\n",
      "2.0853023529052734 3.060317277908325\n",
      "2.1357505321502686 3.068234920501709\n",
      "2.2034778594970703 3.071575403213501\n",
      "1.9283721446990967 3.0568079948425293\n",
      "2.018364667892456 3.0646400451660156\n",
      "2.010925769805908 3.0618550777435303\n",
      "2.103543758392334 3.0692086219787598\n",
      "1.9847774505615234 3.06276273727417\n",
      "1.9939786195755005 3.070227861404419\n",
      "2.1136834621429443 3.0826077461242676\n",
      "1.9729905128479004 3.077401638031006\n",
      "2.0677692890167236 3.0836472511291504\n",
      "1.8460084199905396 3.0634024143218994\n",
      "1.9409288167953491 3.0732030868530273\n",
      "1.86751127243042 3.065786600112915\n",
      "2.145968437194824 3.0854713916778564\n",
      "2.0588738918304443 3.0832462310791016\n",
      "2.0456035137176514 3.0800440311431885\n",
      "2.017512559890747 3.071298837661743\n",
      "2.071911334991455 3.0706233978271484\n",
      "2.0415501594543457 3.0715556144714355\n",
      "1.9256649017333984 3.064716339111328\n",
      "2.073507785797119 3.075083017349243\n",
      "2.046966075897217 3.0611865520477295\n",
      "2.10868763923645 3.066612958908081\n",
      "1.925686001777649 3.0531742572784424\n",
      "2.1096792221069336 3.064981698989868\n",
      "2.0041613578796387 3.0642178058624268\n",
      "2.0417063236236572 3.0651886463165283\n",
      "2.0676512718200684 3.07631516456604\n",
      "1.9653410911560059 3.065279006958008\n",
      "1.9967132806777954 3.064864158630371\n",
      "1.9423636198043823 3.0681583881378174\n",
      "1.9851186275482178 3.0821428298950195\n",
      "2.0956475734710693 3.0960240364074707\n",
      "2.158797025680542 3.1000192165374756\n",
      "2.009230613708496 3.0904369354248047\n",
      "2.000343084335327 3.0971968173980713\n",
      "1.9602558612823486 3.088066577911377\n",
      "1.9425512552261353 3.0853159427642822\n",
      "1.9173372983932495 3.082298755645752\n",
      "1.8770908117294312 3.0798778533935547\n",
      "1.8227818012237549 3.0764100551605225\n",
      "2.060718297958374 3.0981996059417725\n",
      "2.0043320655822754 3.0912485122680664\n",
      "1.8262447118759155 3.0761890411376953\n",
      "2.3679590225219727 3.110245704650879\n",
      "2.0399038791656494 3.0733792781829834\n",
      "2.2135720252990723 3.0875356197357178\n",
      "2.0047545433044434 3.0668489933013916\n",
      "2.0109217166900635 3.068774938583374\n",
      "2.097105026245117 3.0712192058563232\n",
      "1.9170098304748535 3.0633180141448975\n",
      "2.22487211227417 3.082613468170166\n",
      "2.0501224994659424 3.0619616508483887\n",
      "1.837678074836731 3.0441908836364746\n",
      "1.9919811487197876 3.062731981277466\n",
      "1.989351511001587 3.0583696365356445\n",
      "1.7950456142425537 3.044499635696411\n",
      "2.145756959915161 3.0651895999908447\n",
      "2.060356616973877 3.063096046447754\n",
      "1.976771354675293 3.0590736865997314\n",
      "1.8796677589416504 3.0581228733062744\n",
      "1.9904463291168213 3.0677146911621094\n",
      "2.0346837043762207 3.07515287399292\n",
      "1.9263248443603516 3.0614750385284424\n",
      "2.1436777114868164 3.0808053016662598\n",
      "2.038348436355591 3.067924737930298\n",
      "1.8890013694763184 3.056924343109131\n",
      "2.0166995525360107 3.062875747680664\n",
      "2.0723376274108887 3.0698068141937256\n",
      "2.0428669452667236 3.0582406520843506\n",
      "2.0471320152282715 3.059513568878174\n",
      "1.9274643659591675 3.0569989681243896\n",
      "1.9878101348876953 3.061598777770996\n",
      "2.0614469051361084 3.0672457218170166\n",
      "2.035735845565796 3.0659258365631104\n",
      "1.9721931219100952 3.05997633934021\n",
      "1.9993025064468384 3.0609633922576904\n",
      "1.9868639707565308 3.0622153282165527\n",
      "1.953391671180725 3.056187152862549\n",
      "2.11625075340271 3.067305088043213\n",
      "1.9134739637374878 3.0452888011932373\n",
      "1.9711748361587524 3.044729232788086\n",
      "1.9554510116577148 3.037545680999756\n",
      "2.2057583332061768 3.0510566234588623\n",
      "2.1015865802764893 3.045989990234375\n",
      "1.964908480644226 3.036003828048706\n",
      "1.8865355253219604 3.029613971710205\n",
      "2.0001089572906494 3.038346290588379\n",
      "1.9187562465667725 3.0312907695770264\n",
      "2.066364288330078 3.0418713092803955\n",
      "1.9357106685638428 3.0325992107391357\n",
      "1.9232711791992188 3.034698247909546\n",
      "1.7505048513412476 3.01847767829895\n",
      "1.9164936542510986 3.030851125717163\n",
      "1.9922380447387695 3.0419130325317383\n",
      "1.983742117881775 3.0397348403930664\n",
      "1.879805088043213 3.030513286590576\n",
      "1.9606024026870728 3.038816213607788\n",
      "1.9916640520095825 3.04315447807312\n",
      "2.1882781982421875 3.060105562210083\n",
      "1.946358561515808 3.033174991607666\n",
      "1.928107500076294 3.0304670333862305\n",
      "2.042595624923706 3.037299871444702\n",
      "2.0269992351531982 3.0325281620025635\n",
      "2.071631669998169 3.0432097911834717\n",
      "2.0737249851226807 3.0512638092041016\n",
      "1.9273613691329956 3.034428358078003\n",
      "1.9723354578018188 3.0463478565216064\n",
      "1.9051433801651 3.04516863822937\n",
      "1.9212827682495117 3.046973705291748\n",
      "1.8893805742263794 3.0415709018707275\n",
      "2.2808704376220703 3.0735106468200684\n",
      "2.0538837909698486 3.052497625350952\n",
      "2.383279323577881 3.072171211242676\n",
      "1.9986233711242676 3.047799825668335\n",
      "2.032818555831909 3.0505785942077637\n",
      "1.9319297075271606 3.0453708171844482\n",
      "2.0174014568328857 3.051640748977661\n",
      "1.8952178955078125 3.0449414253234863\n",
      "1.9963908195495605 3.0542361736297607\n",
      "1.8471094369888306 3.0369367599487305\n",
      "1.9731767177581787 3.0488710403442383\n",
      "2.0135338306427 3.052932024002075\n",
      "2.116008996963501 3.0508828163146973\n",
      "1.9942708015441895 3.043630361557007\n",
      "1.9274786710739136 3.0408952236175537\n",
      "2.121648073196411 3.0505547523498535\n",
      "1.8553192615509033 3.0263242721557617\n",
      "1.8787847757339478 3.029355525970459\n",
      "2.0907373428344727 3.0398218631744385\n",
      "2.095094919204712 3.037104606628418\n",
      "2.0717716217041016 3.036205530166626\n",
      "1.8640706539154053 3.0238399505615234\n",
      "2.0877280235290527 3.036363363265991\n",
      "1.8729066848754883 3.0164425373077393\n",
      "2.088134765625 3.0343849658966064\n",
      "1.9723559617996216 3.026217460632324\n",
      "1.8319398164749146 3.017164945602417\n",
      "2.0262060165405273 3.032613515853882\n",
      "2.042973518371582 3.0264127254486084\n",
      "2.062758445739746 3.030101776123047\n",
      "1.9115898609161377 3.0195016860961914\n",
      "1.9881224632263184 3.0246262550354004\n",
      "1.748421549797058 3.0047855377197266\n",
      "1.9726604223251343 3.0199570655822754\n",
      "2.2798752784729004 3.040985345840454\n",
      "2.0430450439453125 3.0215001106262207\n",
      "2.0897796154022217 3.0270683765411377\n",
      "2.0606276988983154 3.0249900817871094\n",
      "2.011509418487549 3.0203664302825928\n",
      "1.7896080017089844 3.0125253200531006\n",
      "1.9871487617492676 3.037416934967041\n",
      "2.075162172317505 3.0439743995666504\n",
      "2.013385057449341 3.039703607559204\n",
      "2.042534112930298 3.038702964782715\n",
      "2.019846200942993 3.038749933242798\n",
      "1.9468958377838135 3.0294642448425293\n",
      "2.121260643005371 3.0398242473602295\n",
      "1.9785276651382446 3.0333786010742188\n",
      "2.0655176639556885 3.044126033782959\n",
      "1.9084649085998535 3.031555652618408\n",
      "2.059943914413452 3.0487353801727295\n",
      "1.9533660411834717 3.036827802658081\n",
      "2.1017019748687744 3.0533430576324463\n",
      "1.9006528854370117 3.0390758514404297\n",
      "1.9888297319412231 3.047437906265259\n",
      "2.0446019172668457 3.0540528297424316\n",
      "1.760696291923523 3.0283005237579346\n",
      "1.7979812622070312 3.0263755321502686\n",
      "1.8668400049209595 3.0426712036132812\n",
      "2.074282646179199 3.0527873039245605\n",
      "1.8824125528335571 3.0327603816986084\n",
      "1.9547247886657715 3.0349574089050293\n",
      "2.032809257507324 3.039966344833374\n",
      "1.8615745306015015 3.0295257568359375\n",
      "1.9187424182891846 3.0321545600891113\n",
      "1.651100754737854 3.011500835418701\n",
      "1.8927892446517944 3.0341506004333496\n",
      "1.8514461517333984 3.0334339141845703\n",
      "2.2063302993774414 3.0562593936920166\n",
      "1.8406370878219604 3.02988600730896\n",
      "2.12479305267334 3.052578926086426\n",
      "1.9412192106246948 3.035996437072754\n",
      "2.089416027069092 3.047733783721924\n",
      "1.930641531944275 3.0407159328460693\n",
      "2.088449239730835 3.053107976913452\n",
      "2.090698003768921 3.0608978271484375\n",
      "1.9622318744659424 3.0528173446655273\n",
      "1.9410556554794312 3.0517947673797607\n",
      "2.02036452293396 3.061190605163574\n",
      "1.860499620437622 3.0567984580993652\n",
      "1.9884854555130005 3.0745882987976074\n",
      "2.079578161239624 3.0784103870391846\n",
      "1.8838322162628174 3.071622133255005\n",
      "1.9526941776275635 3.082972288131714\n",
      "2.049622058868408 3.089430809020996\n",
      "2.0255680084228516 3.088832378387451\n",
      "2.0008840560913086 3.0842013359069824\n",
      "1.9531924724578857 3.0751163959503174\n",
      "1.9929050207138062 3.0730600357055664\n",
      "2.245795726776123 3.1020045280456543\n",
      "2.1217031478881836 3.0827553272247314\n",
      "2.1547961235046387 3.088557720184326\n",
      "2.0015041828155518 3.0793709754943848\n",
      "1.9004302024841309 3.0781748294830322\n",
      "1.9810758829116821 3.0786964893341064\n",
      "1.8879079818725586 3.0707387924194336\n",
      "1.9674909114837646 3.0762314796447754\n",
      "2.052367925643921 3.0843307971954346\n",
      "1.9614923000335693 3.083575487136841\n",
      "1.9348628520965576 3.080775737762451\n",
      "1.9046446084976196 3.0797388553619385\n",
      "2.057356357574463 3.0979907512664795\n",
      "1.9843586683273315 3.089031457901001\n",
      "1.817781686782837 3.078099250793457\n",
      "2.0293562412261963 3.0941765308380127\n",
      "1.915923833847046 3.083430528640747\n",
      "2.0371594429016113 3.094736337661743\n",
      "2.1237571239471436 3.0968751907348633\n",
      "1.9649295806884766 3.0854103565216064\n",
      "1.8302452564239502 3.0731201171875\n",
      "2.121119260787964 3.0963551998138428\n",
      "1.9696874618530273 3.0794076919555664\n",
      "2.103224992752075 3.092999219894409\n",
      "1.9003111124038696 3.0723681449890137\n",
      "2.009896755218506 3.0784754753112793\n",
      "1.8745439052581787 3.0692572593688965\n",
      "2.1016368865966797 3.0824365615844727\n",
      "2.057035207748413 3.0743277072906494\n",
      "2.004180908203125 3.0661110877990723\n",
      "1.9951223134994507 3.063490629196167\n",
      "2.022076368331909 3.062988519668579\n",
      "1.8602579832077026 3.05724835395813\n",
      "2.0733304023742676 3.0725746154785156\n",
      "2.0176758766174316 3.0719563961029053\n",
      "1.9719040393829346 3.0673410892486572\n",
      "1.9026750326156616 3.0649149417877197\n",
      "1.745712161064148 3.0506021976470947\n",
      "2.0948970317840576 3.06850266456604\n",
      "2.0235183238983154 3.061011791229248\n",
      "1.9836385250091553 3.0586917400360107\n",
      "2.0609476566314697 3.0610532760620117\n",
      "2.047335624694824 3.061419725418091\n",
      "2.077305555343628 3.0680830478668213\n",
      "1.9917948246002197 3.0623204708099365\n",
      "2.036031484603882 3.061891555786133\n",
      "2.027597665786743 3.0622615814208984\n",
      "1.9736288785934448 3.060436964035034\n",
      "2.1134872436523438 3.0745394229888916\n",
      "2.0977115631103516 3.080345630645752\n",
      "2.038336753845215 3.0743637084960938\n",
      "1.980389952659607 3.0736522674560547\n",
      "1.9529346227645874 3.0663022994995117\n",
      "2.037083148956299 3.071241617202759\n",
      "2.1745834350585938 3.080129384994507\n",
      "1.9246653318405151 3.0710694789886475\n",
      "1.928772211074829 3.0703301429748535\n",
      "2.0981531143188477 3.0829720497131348\n",
      "2.163989782333374 3.0876004695892334\n",
      "1.7834882736206055 3.0646955966949463\n",
      "1.9635186195373535 3.0730063915252686\n",
      "1.9192655086517334 3.0747199058532715\n",
      "1.8539551496505737 3.0679335594177246\n",
      "1.9501808881759644 3.0795271396636963\n",
      "1.995572566986084 3.0809412002563477\n",
      "2.0092923641204834 3.079254150390625\n",
      "1.990893840789795 3.073758840560913\n",
      "1.8966389894485474 3.0639567375183105\n",
      "1.7717410326004028 3.0585641860961914\n",
      "2.0198163986206055 3.078882932662964\n",
      "2.024854898452759 3.0802783966064453\n",
      "1.9962618350982666 3.0727880001068115\n",
      "2.09159517288208 3.0791828632354736\n",
      "2.1695027351379395 3.085758686065674\n",
      "2.0669336318969727 3.073742151260376\n",
      "1.7901898622512817 3.051224708557129\n",
      "2.0808048248291016 3.0695040225982666\n",
      "2.157717704772949 3.0735342502593994\n",
      "1.9636685848236084 3.0585744380950928\n",
      "2.1175642013549805 3.058969020843506\n",
      "1.8152081966400146 3.0350229740142822\n",
      "1.8494288921356201 3.034701108932495\n",
      "1.849111557006836 3.0418479442596436\n",
      "1.9095854759216309 3.0418190956115723\n",
      "2.307199001312256 3.0634605884552\n",
      "1.8712146282196045 3.0297462940216064\n",
      "2.0252974033355713 3.0375068187713623\n",
      "1.9351191520690918 3.0313117504119873\n",
      "2.067978620529175 3.0408411026000977\n",
      "1.8433398008346558 3.0208897590637207\n",
      "1.8057602643966675 3.0202600955963135\n",
      "1.9246890544891357 3.0262107849121094\n",
      "2.241659641265869 3.046748161315918\n",
      "1.9517923593521118 3.0207884311676025\n",
      "1.9594255685806274 3.0207629203796387\n",
      "1.8159294128417969 3.014366865158081\n",
      "1.9403197765350342 3.033000946044922\n",
      "2.0627405643463135 3.047616481781006\n",
      "2.1328132152557373 3.0561721324920654\n",
      "2.119054079055786 3.057586193084717\n",
      "2.02618670463562 3.0503294467926025\n",
      "1.8691067695617676 3.0423805713653564\n",
      "1.9173599481582642 3.0394256114959717\n",
      "1.9020034074783325 3.0353565216064453\n",
      "2.0768609046936035 3.0409023761749268\n",
      "2.103592872619629 3.0431833267211914\n",
      "1.9615689516067505 3.020867347717285\n",
      "2.0423922538757324 3.0259995460510254\n",
      "1.8682518005371094 3.018079996109009\n",
      "2.095681667327881 3.0342938899993896\n",
      "2.1937150955200195 3.040597915649414\n",
      "1.9179975986480713 3.020848512649536\n",
      "1.9061782360076904 3.0161914825439453\n",
      "1.9616458415985107 3.018193006515503\n",
      "1.9614945650100708 3.0165107250213623\n",
      "1.8553459644317627 3.0047342777252197\n",
      "1.9299006462097168 3.0116405487060547\n",
      "1.999854326248169 3.0159621238708496\n",
      "2.0371434688568115 3.0209312438964844\n",
      "1.865954041481018 3.000105142593384\n",
      "1.9384753704071045 3.0128374099731445\n",
      "1.9097956418991089 3.0084142684936523\n",
      "1.994544506072998 3.0140814781188965\n",
      "1.9884430170059204 3.013441562652588\n",
      "2.1116232872009277 3.013584613800049\n",
      "1.9580274820327759 3.0036096572875977\n",
      "1.9984729290008545 3.0042741298675537\n",
      "1.8386693000793457 2.995185375213623\n",
      "2.09120774269104 3.01302170753479\n",
      "1.94940984249115 3.0004918575286865\n",
      "2.0955498218536377 3.012086868286133\n",
      "2.143911361694336 3.009117364883423\n",
      "1.7627081871032715 2.9759228229522705\n",
      "1.9128988981246948 2.9849321842193604\n",
      "2.173229217529297 3.006112813949585\n",
      "2.117467164993286 3.0021419525146484\n",
      "2.100393772125244 2.9967641830444336\n",
      "1.8268126249313354 2.976863145828247\n",
      "2.0322670936584473 2.9921653270721436\n",
      "2.0331456661224365 2.9962728023529053\n",
      "1.9015268087387085 2.9848453998565674\n",
      "1.945878028869629 2.9867773056030273\n",
      "2.071394681930542 2.9889981746673584\n",
      "1.9207149744033813 2.9746382236480713\n",
      "2.0531907081604004 2.9885342121124268\n",
      "2.0013768672943115 2.9858126640319824\n",
      "1.9147894382476807 2.981221914291382\n",
      "2.0417940616607666 2.9887166023254395\n",
      "1.9190266132354736 2.9843735694885254\n",
      "1.815597414970398 2.9757611751556396\n",
      "1.8939270973205566 2.9860761165618896\n",
      "1.9753814935684204 2.9903512001037598\n",
      "2.0297274589538574 3.000128984451294\n",
      "1.8431735038757324 2.985750198364258\n",
      "2.007326126098633 2.9920880794525146\n",
      "1.8396375179290771 2.9804747104644775\n",
      "2.0989279747009277 3.0012996196746826\n",
      "2.0173850059509277 2.9941048622131348\n",
      "1.905359148979187 2.9829328060150146\n",
      "1.9145909547805786 2.980647325515747\n",
      "1.9063204526901245 2.976496458053589\n",
      "2.0420353412628174 2.9836747646331787\n",
      "2.1976516246795654 2.999451160430908\n",
      "1.956884741783142 2.9821853637695312\n",
      "2.171043872833252 3.0025205612182617\n",
      "1.9796454906463623 2.9840915203094482\n",
      "1.8654857873916626 2.9691896438598633\n",
      "1.8811168670654297 2.9651174545288086\n",
      "1.9225958585739136 2.9681427478790283\n",
      "2.081117868423462 2.9774720668792725\n",
      "1.9021698236465454 2.964128255844116\n",
      "1.9496463537216187 2.964388132095337\n",
      "1.8573025465011597 2.957942008972168\n",
      "1.9848706722259521 2.961249828338623\n",
      "1.9214011430740356 2.9502639770507812\n",
      "2.043070077896118 2.9683542251586914\n",
      "1.7824628353118896 2.9505693912506104\n",
      "1.9867007732391357 2.9665234088897705\n",
      "1.9861408472061157 2.966006278991699\n",
      "1.7708699703216553 2.945462465286255\n",
      "1.9814952611923218 2.967684507369995\n",
      "1.9512068033218384 2.960446834564209\n",
      "1.8250592947006226 2.9470181465148926\n",
      "2.389798164367676 2.9910151958465576\n",
      "1.901717185974121 2.9493608474731445\n",
      "2.02455472946167 2.9601573944091797\n",
      "2.0110840797424316 2.958167314529419\n",
      "2.0157296657562256 2.9583795070648193\n",
      "1.8538023233413696 2.9497318267822266\n",
      "2.219863176345825 2.9656083583831787\n",
      "2.0318522453308105 2.947537422180176\n",
      "1.957373857498169 2.9485747814178467\n",
      "2.0432355403900146 2.951672077178955\n",
      "2.048107385635376 2.9525833129882812\n",
      "2.0809295177459717 2.9579272270202637\n",
      "1.996638536453247 2.9464118480682373\n",
      "2.066838026046753 2.9480667114257812\n",
      "1.9940133094787598 2.9447872638702393\n",
      "2.0164520740509033 2.934581995010376\n",
      "1.9785815477371216 2.9351799488067627\n",
      "2.060116767883301 2.939950942993164\n",
      "1.7936015129089355 2.921628952026367\n",
      "2.0718085765838623 2.944472551345825\n",
      "1.9768112897872925 2.938636541366577\n",
      "2.064563512802124 2.940997362136841\n",
      "1.9921776056289673 2.9383881092071533\n",
      "2.08612060546875 2.942471504211426\n",
      "2.1744327545166016 2.95194673538208\n",
      "2.0272581577301025 2.9479434490203857\n",
      "2.0070695877075195 2.9535810947418213\n",
      "1.9350329637527466 2.9455854892730713\n",
      "2.1331284046173096 2.960157871246338\n",
      "1.8227102756500244 2.9426987171173096\n",
      "1.819605827331543 2.944263219833374\n",
      "1.9327471256256104 2.9547486305236816\n",
      "2.0667762756347656 2.96340274810791\n",
      "2.1044270992279053 2.962681531906128\n",
      "2.0705699920654297 2.9637222290039062\n",
      "1.8592745065689087 2.951273202896118\n",
      "2.2055418491363525 2.977123975753784\n",
      "2.0079612731933594 2.963946580886841\n",
      "1.8766781091690063 2.9552018642425537\n",
      "1.9510135650634766 2.9587347507476807\n",
      "1.870584487915039 2.957083225250244\n",
      "2.0811822414398193 2.9734394550323486\n",
      "2.016641616821289 2.965869188308716\n",
      "2.1386559009552 2.973743438720703\n",
      "2.054722309112549 2.9610002040863037\n",
      "2.0233352184295654 2.956841468811035\n",
      "2.0306167602539062 2.9587831497192383\n",
      "2.0201973915100098 2.9606332778930664\n",
      "1.9965314865112305 2.960984706878662\n",
      "2.0027337074279785 2.955745220184326\n",
      "1.7806038856506348 2.9365482330322266\n",
      "2.0653185844421387 2.9566335678100586\n",
      "1.875499963760376 2.946363687515259\n",
      "1.910841703414917 2.9483394622802734\n",
      "2.0961854457855225 2.96682071685791\n",
      "1.9308810234069824 2.9509530067443848\n",
      "1.928753137588501 2.954880475997925\n",
      "1.9731683731079102 2.956395387649536\n",
      "2.083413600921631 2.966034412384033\n",
      "1.97187077999115 2.9617364406585693\n",
      "1.952044129371643 2.9609451293945312\n",
      "1.893092393875122 2.955940008163452\n",
      "1.8607287406921387 2.9521565437316895\n",
      "1.9881994724273682 2.9605069160461426\n",
      "2.0732779502868652 2.9632837772369385\n",
      "1.9704138040542603 2.9508910179138184\n",
      "2.0562589168548584 2.9624598026275635\n",
      "1.9196046590805054 2.9533915519714355\n",
      "1.9083236455917358 2.9529738426208496\n",
      "2.0630545616149902 2.9630837440490723\n",
      "2.092999219894409 2.9636099338531494\n",
      "2.009333848953247 2.9569809436798096\n",
      "1.9966208934783936 2.956204414367676\n",
      "1.9244598150253296 2.9416868686676025\n",
      "1.9575185775756836 2.9578094482421875\n",
      "1.9425678253173828 2.958540678024292\n",
      "2.109314203262329 2.9712777137756348\n",
      "1.928412675857544 2.9692773818969727\n",
      "2.0657103061676025 2.9740822315216064\n",
      "2.021660566329956 2.9775173664093018\n",
      "1.997230887413025 2.970827341079712\n",
      "2.0628485679626465 2.9781763553619385\n",
      "1.976479411125183 2.973724842071533\n",
      "1.8944673538208008 2.967822313308716\n",
      "1.888862133026123 2.97829008102417\n",
      "1.8819921016693115 2.984314441680908\n",
      "1.7516469955444336 2.9744699001312256\n",
      "1.9469449520111084 2.995185136795044\n",
      "1.948683738708496 2.9949698448181152\n",
      "2.1456315517425537 3.0100245475769043\n",
      "2.068028211593628 3.008120536804199\n",
      "1.9590221643447876 3.002150535583496\n",
      "2.0704593658447266 3.008244276046753\n",
      "2.069319486618042 3.0131216049194336\n",
      "2.0495376586914062 3.011641263961792\n",
      "2.0750067234039307 3.0131115913391113\n",
      "2.0370821952819824 3.015535354614258\n",
      "1.941009759902954 3.0133960247039795\n",
      "1.865647554397583 3.006530523300171\n",
      "1.987709403038025 3.015399694442749\n",
      "1.9190278053283691 3.0106942653656006\n",
      "2.0100977420806885 3.0273232460021973\n",
      "1.9008450508117676 3.023411512374878\n",
      "2.0018088817596436 3.025315046310425\n",
      "1.8988876342773438 3.0150675773620605\n",
      "2.2343504428863525 3.0380778312683105\n",
      "2.097900390625 3.0291967391967773\n",
      "2.04978346824646 3.031658172607422\n",
      "1.9047613143920898 3.0247228145599365\n",
      "2.062004327774048 3.046109914779663\n",
      "2.0558550357818604 3.0440328121185303\n",
      "2.0457024574279785 3.0541954040527344\n",
      "1.909773826599121 3.045199155807495\n",
      "2.0400333404541016 3.0589253902435303\n",
      "2.0531303882598877 3.062487840652466\n",
      "1.8958995342254639 3.0463294982910156\n",
      "1.9226205348968506 3.049377918243408\n",
      "2.030085325241089 3.0584986209869385\n",
      "2.0439295768737793 3.061347007751465\n",
      "1.8050481081008911 3.0463814735412598\n",
      "1.8481576442718506 3.0551488399505615\n",
      "2.044877529144287 3.0693087577819824\n",
      "2.08115291595459 3.076756477355957\n",
      "2.1515703201293945 3.0848028659820557\n",
      "2.0336172580718994 3.069424867630005\n",
      "1.7490167617797852 3.0437428951263428\n",
      "2.1373331546783447 3.0770111083984375\n",
      "1.9277758598327637 3.05930495262146\n",
      "1.897803783416748 3.0564520359039307\n",
      "2.4378867149353027 3.09305477142334\n",
      "2.149672031402588 3.065922737121582\n",
      "1.886295199394226 3.0455026626586914\n",
      "1.9066240787506104 3.047395944595337\n",
      "1.8140647411346436 3.038220167160034\n",
      "1.948311448097229 3.0449302196502686\n",
      "2.0841352939605713 3.0510621070861816\n",
      "1.9007213115692139 3.0342020988464355\n",
      "2.00050687789917 3.045988082885742\n",
      "1.9856493473052979 3.050152063369751\n",
      "2.056533098220825 3.053342580795288\n",
      "2.039754867553711 3.0498321056365967\n",
      "2.219334363937378 3.0610222816467285\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.0751466751098633 3.0466387271881104\n",
      "1.774314284324646 3.0213024616241455\n",
      "1.9799755811691284 3.039804220199585\n",
      "1.9432320594787598 3.034451961517334\n",
      "2.309098958969116 3.0512588024139404\n",
      "1.9757851362228394 3.026108503341675\n",
      "2.009227991104126 3.027578592300415\n",
      "1.9781959056854248 3.017076015472412\n",
      "2.0595173835754395 3.021867036819458\n",
      "2.0305609703063965 3.018807888031006\n",
      "2.056455612182617 3.019697666168213\n",
      "2.0570831298828125 3.01753830909729\n",
      "2.025116205215454 3.0107994079589844\n",
      "1.9085230827331543 3.001082420349121\n",
      "2.048994302749634 3.0164527893066406\n",
      "1.8751415014266968 2.9976446628570557\n",
      "1.948732852935791 3.001136302947998\n",
      "1.8667781352996826 2.9946374893188477\n",
      "1.9766948223114014 3.002185106277466\n",
      "2.032329559326172 3.004458427429199\n",
      "2.009675979614258 3.001666307449341\n",
      "1.9730998277664185 3.000488758087158\n",
      "1.9924389123916626 2.997579336166382\n",
      "2.0326037406921387 3.0009641647338867\n",
      "2.151240110397339 3.011857271194458\n",
      "2.106189250946045 3.0075151920318604\n",
      "1.8287572860717773 2.9907374382019043\n",
      "1.8704884052276611 2.9910390377044678\n",
      "2.009641408920288 3.0018205642700195\n",
      "1.970514178276062 2.9990053176879883\n",
      "2.0029735565185547 3.000884771347046\n",
      "1.9571585655212402 2.9932820796966553\n",
      "1.8837496042251587 2.9858906269073486\n",
      "2.086855888366699 3.001502275466919\n",
      "2.131373405456543 3.0067858695983887\n",
      "2.092895269393921 3.006894588470459\n",
      "2.118318557739258 3.003122091293335\n",
      "2.0262610912323 2.9956932067871094\n",
      "1.8772574663162231 2.9840986728668213\n",
      "2.0134198665618896 2.993600606918335\n",
      "2.0682790279388428 2.996748685836792\n",
      "2.0762779712677 2.998352289199829\n",
      "1.887367844581604 2.9830665588378906\n",
      "2.045330047607422 3.0007574558258057\n",
      "2.0457324981689453 3.0031354427337646\n",
      "2.0737595558166504 3.0080418586730957\n",
      "2.0926640033721924 3.007065534591675\n",
      "1.969475507736206 3.0008652210235596\n",
      "1.9947185516357422 2.99959135055542\n",
      "1.9964227676391602 2.9980368614196777\n",
      "2.072004556655884 3.008582592010498\n",
      "1.954758644104004 2.9970881938934326\n",
      "1.9220890998840332 2.9903767108917236\n",
      "2.0545811653137207 2.9965531826019287\n",
      "1.858489990234375 2.9852871894836426\n",
      "1.900328516960144 2.994861364364624\n",
      "1.8732826709747314 2.994602680206299\n",
      "2.0057592391967773 3.0056941509246826\n",
      "1.9855635166168213 3.00174617767334\n",
      "2.010349750518799 2.999889612197876\n",
      "2.046217679977417 3.003592014312744\n",
      "2.0698342323303223 3.0074243545532227\n",
      "1.9689364433288574 3.000581741333008\n",
      "2.042926788330078 3.0059568881988525\n",
      "1.9749445915222168 3.001307725906372\n",
      "1.9350637197494507 2.9993977546691895\n",
      "2.2447316646575928 3.0153257846832275\n",
      "1.973418951034546 2.9956581592559814\n",
      "2.124051332473755 3.0112903118133545\n",
      "1.9395123720169067 2.9994266033172607\n",
      "1.8706778287887573 2.9881985187530518\n",
      "1.9886698722839355 2.9953551292419434\n",
      "1.9564542770385742 2.989912986755371\n",
      "1.9902756214141846 2.9938623905181885\n",
      "1.955935001373291 2.9825963973999023\n",
      "1.9161075353622437 2.9806694984436035\n",
      "1.8420301675796509 2.97639536857605\n",
      "2.1360702514648438 3.002840518951416\n",
      "2.088967800140381 3.000476598739624\n",
      "1.7395832538604736 2.9779160022735596\n",
      "2.0987656116485596 3.0040977001190186\n",
      "1.83035147190094 2.9857211112976074\n",
      "2.0263895988464355 2.9973630905151367\n",
      "1.9824213981628418 2.9856724739074707\n",
      "2.1189944744110107 2.994708299636841\n",
      "1.899479627609253 2.9697604179382324\n",
      "2.123912811279297 2.9879448413848877\n",
      "2.050678014755249 2.98608136177063\n",
      "2.18601393699646 2.999781608581543\n",
      "1.7654962539672852 2.9722745418548584\n",
      "1.8826324939727783 2.989558458328247\n",
      "2.070218086242676 3.002187728881836\n",
      "2.0819380283355713 3.0047171115875244\n",
      "2.05499267578125 2.9993820190429688\n",
      "1.8960200548171997 2.9919819831848145\n",
      "2.071568727493286 3.0028536319732666\n",
      "1.9678343534469604 2.992886543273926\n",
      "1.8958489894866943 2.983900547027588\n",
      "1.9843552112579346 2.9911372661590576\n",
      "1.8936641216278076 2.9829721450805664\n",
      "2.060994863510132 3.0025386810302734\n",
      "2.0581321716308594 3.002577781677246\n",
      "1.9702388048171997 2.9953553676605225\n",
      "1.9183883666992188 2.988452672958374\n",
      "1.9023385047912598 2.985567331314087\n",
      "1.9440174102783203 2.989445209503174\n",
      "1.9753385782241821 2.989720582962036\n",
      "1.9006357192993164 2.9860782623291016\n",
      "1.9117506742477417 2.9732003211975098\n",
      "2.1032986640930176 2.9829888343811035\n",
      "2.0159895420074463 2.969895839691162\n",
      "1.9985677003860474 2.9753055572509766\n",
      "1.8973459005355835 2.9680347442626953\n",
      "1.9073753356933594 2.9678192138671875\n",
      "1.9178799390792847 2.971123695373535\n",
      "2.0346620082855225 2.9791290760040283\n",
      "1.8421870470046997 2.9788148403167725\n",
      "1.8847460746765137 2.980332374572754\n",
      "2.10453200340271 2.990255832672119\n",
      "1.8917350769042969 2.976308822631836\n",
      "2.037879228591919 2.9918739795684814\n",
      "1.9775317907333374 2.988703489303589\n",
      "2.0422089099884033 2.9927666187286377\n",
      "1.9165598154067993 2.9846761226654053\n",
      "1.8812141418457031 2.9821395874023438\n",
      "1.970841646194458 2.982362747192383\n",
      "2.041895866394043 2.975095748901367\n",
      "2.0300605297088623 2.973249673843384\n",
      "2.0552875995635986 2.975324869155884\n",
      "1.9739450216293335 2.96304988861084\n",
      "1.8968137502670288 2.963071823120117\n",
      "2.241706371307373 2.9858100414276123\n",
      "1.9010555744171143 2.956639528274536\n",
      "2.117584705352783 2.9736504554748535\n",
      "1.8175760507583618 2.9539506435394287\n",
      "2.052802085876465 2.9761760234832764\n",
      "1.953123688697815 2.973315954208374\n",
      "1.9277161359786987 2.9666950702667236\n",
      "2.046658992767334 2.9862518310546875\n",
      "1.9860867261886597 2.9819507598876953\n",
      "1.9031038284301758 2.9733827114105225\n",
      "2.0024001598358154 2.994495153427124\n",
      "1.9719130992889404 2.9902210235595703\n",
      "2.1667351722717285 3.0049548149108887\n",
      "2.071648359298706 2.9947118759155273\n",
      "2.039512872695923 3.000068187713623\n",
      "1.9743382930755615 2.9955663681030273\n",
      "2.0447161197662354 3.0069539546966553\n",
      "2.099276542663574 3.0115597248077393\n",
      "2.0078606605529785 3.0055315494537354\n",
      "1.9969137907028198 3.0067691802978516\n",
      "2.1339669227600098 3.0150036811828613\n",
      "2.041116714477539 3.0105972290039062\n",
      "1.9390227794647217 2.999478816986084\n",
      "1.9410780668258667 2.998051404953003\n",
      "1.9130401611328125 2.9928019046783447\n",
      "1.9701951742172241 2.9904065132141113\n",
      "1.8795993328094482 2.9839718341827393\n",
      "2.0303521156311035 2.9924652576446533\n",
      "2.0484604835510254 2.990713596343994\n",
      "2.120107889175415 2.9971864223480225\n",
      "2.006350517272949 2.984161615371704\n",
      "2.050750970840454 2.986333131790161\n",
      "2.018498420715332 2.9858787059783936\n",
      "2.0880653858184814 2.989914894104004\n",
      "2.0082852840423584 2.9853272438049316\n",
      "1.8508604764938354 2.9766547679901123\n",
      "1.9506735801696777 2.9902894496917725\n",
      "2.175473928451538 3.0040104389190674\n",
      "2.05275821685791 2.9904532432556152\n",
      "1.991241455078125 2.985198736190796\n",
      "1.852886438369751 2.975865125656128\n",
      "2.055385112762451 2.989439010620117\n",
      "1.8094027042388916 2.9706459045410156\n",
      "1.886756420135498 2.986481189727783\n",
      "1.9556677341461182 2.9853603839874268\n",
      "1.973961591720581 2.982886791229248\n",
      "2.002556562423706 2.9898765087127686\n",
      "1.9507139921188354 2.985682487487793\n",
      "1.8014271259307861 2.981342077255249\n",
      "2.1089086532592773 3.0057897567749023\n",
      "1.7958076000213623 2.9767074584960938\n",
      "2.0053977966308594 2.998767852783203\n",
      "2.180037498474121 3.0076427459716797\n",
      "1.897390604019165 2.990788459777832\n",
      "2.025355577468872 3.001474380493164\n",
      "2.0216939449310303 2.9974021911621094\n",
      "1.9556041955947876 2.9915034770965576\n",
      "2.038433074951172 2.994746685028076\n",
      "2.117044687271118 2.998063325881958\n",
      "1.940732479095459 2.9916632175445557\n",
      "1.8944058418273926 2.985701084136963\n",
      "1.9003474712371826 2.9886443614959717\n",
      "1.8678113222122192 2.984755039215088\n",
      "2.059553384780884 3.0002005100250244\n",
      "2.0342302322387695 2.9986279010772705\n",
      "1.910316824913025 2.975682020187378\n",
      "1.9191110134124756 2.9783105850219727\n",
      "2.100541353225708 2.9869766235351562\n",
      "1.9818143844604492 2.974402904510498\n",
      "1.9930378198623657 2.9749200344085693\n",
      "1.9380476474761963 2.9695417881011963\n",
      "2.1083099842071533 2.973858118057251\n",
      "2.043694257736206 2.969998836517334\n",
      "2.0565333366394043 2.967081069946289\n",
      "2.1719608306884766 2.9716339111328125\n",
      "2.0062155723571777 2.958440065383911\n",
      "2.1042613983154297 2.9621264934539795\n",
      "2.1035964488983154 2.9562907218933105\n",
      "2.053535223007202 2.9510281085968018\n",
      "2.0769925117492676 2.95744252204895\n",
      "1.9875272512435913 2.9531052112579346\n",
      "2.0911006927490234 2.9590444564819336\n",
      "2.0809056758880615 2.957836627960205\n",
      "1.9953100681304932 2.9495205879211426\n",
      "2.142500638961792 2.9631948471069336\n",
      "1.8699352741241455 2.9440255165100098\n",
      "2.0445756912231445 2.954303741455078\n",
      "2.121948003768921 2.9654412269592285\n",
      "2.126350164413452 2.9656827449798584\n",
      "2.0549120903015137 2.9622230529785156\n",
      "2.0392446517944336 2.958547592163086\n",
      "1.9364910125732422 2.951479434967041\n",
      "1.8826427459716797 2.940462827682495\n",
      "2.169840097427368 2.963804244995117\n",
      "1.915050745010376 2.9505934715270996\n",
      "2.163001298904419 2.9627275466918945\n",
      "1.7281274795532227 2.9350998401641846\n",
      "1.925260066986084 2.9475200176239014\n",
      "2.118295192718506 2.963759183883667\n",
      "2.124530553817749 2.9613823890686035\n",
      "1.779834270477295 2.9418222904205322\n",
      "2.1282620429992676 2.970146656036377\n",
      "1.8996912240982056 2.953702449798584\n",
      "1.9600374698638916 2.970095157623291\n",
      "2.2584011554718018 2.9897754192352295\n",
      "1.7817206382751465 2.957552671432495\n",
      "2.034868001937866 2.9792959690093994\n",
      "2.0866382122039795 2.981232166290283\n",
      "1.8571966886520386 2.956934928894043\n",
      "2.137415647506714 2.9723589420318604\n",
      "2.1123087406158447 2.9736862182617188\n",
      "2.022185802459717 2.9637677669525146\n",
      "1.9303337335586548 2.952871799468994\n",
      "1.9915329217910767 2.9574360847473145\n",
      "1.9879200458526611 2.9533445835113525\n",
      "2.0090837478637695 2.954659938812256\n",
      "1.9579626321792603 2.943844795227051\n",
      "2.1244211196899414 2.9604079723358154\n",
      "1.855846643447876 2.9365949630737305\n",
      "1.9108431339263916 2.9449522495269775\n",
      "1.9810945987701416 2.9470534324645996\n",
      "1.8563899993896484 2.9338066577911377\n",
      "2.1721155643463135 2.9550135135650635\n",
      "1.9859052896499634 2.94183349609375\n",
      "2.0526936054229736 2.9504125118255615\n",
      "1.8295360803604126 2.9341728687286377\n",
      "1.9531846046447754 2.941326856613159\n",
      "1.885327935218811 2.9391117095947266\n",
      "2.0803494453430176 2.9499292373657227\n",
      "2.0129382610321045 2.945887565612793\n",
      "1.764750599861145 2.9298691749572754\n",
      "1.7621506452560425 2.9302022457122803\n",
      "2.264275074005127 2.9643468856811523\n",
      "2.1374459266662598 2.958425283432007\n",
      "1.9536794424057007 2.943321466445923\n",
      "1.9492406845092773 2.941984176635742\n",
      "1.9709522724151611 2.9401473999023438\n",
      "2.0233142375946045 2.948732852935791\n",
      "2.0721254348754883 2.9573612213134766\n",
      "1.9498491287231445 2.946099042892456\n",
      "2.057356357574463 2.954404830932617\n",
      "2.1295623779296875 2.965359926223755\n",
      "1.9367303848266602 2.9505977630615234\n",
      "1.9952281713485718 2.9549970626831055\n",
      "2.019765615463257 2.951829433441162\n",
      "2.1228344440460205 2.9568917751312256\n",
      "2.0099308490753174 2.9489529132843018\n",
      "2.128941059112549 2.9563121795654297\n",
      "1.9547255039215088 2.9388837814331055\n",
      "2.0531063079833984 2.946094512939453\n",
      "2.1674141883850098 2.953664779663086\n",
      "2.0717427730560303 2.9466230869293213\n",
      "2.047731637954712 2.937354564666748\n",
      "2.018786668777466 2.9360740184783936\n",
      "1.9188450574874878 2.9402787685394287\n",
      "1.9074687957763672 2.946437358856201\n",
      "2.012749671936035 2.957974672317505\n",
      "1.9751168489456177 2.9515554904937744\n",
      "1.8805644512176514 2.9501423835754395\n",
      "2.1169896125793457 2.969953775405884\n",
      "2.0145204067230225 2.9579551219940186\n",
      "2.017301559448242 2.9608700275421143\n",
      "2.1435587406158447 2.9678170680999756\n",
      "1.8654462099075317 2.947955846786499\n",
      "2.000932455062866 2.9493632316589355\n",
      "2.0314950942993164 2.950655221939087\n",
      "1.9723974466323853 2.945478677749634\n",
      "2.019127607345581 2.9533746242523193\n",
      "2.1630609035491943 2.970651626586914\n",
      "2.1215968132019043 2.9647750854492188\n",
      "2.072003126144409 2.9562551975250244\n",
      "1.9958440065383911 2.9547274112701416\n",
      "2.0521185398101807 2.9659316539764404\n",
      "2.081368923187256 2.9758851528167725\n",
      "2.0960581302642822 2.967095136642456\n",
      "1.7432388067245483 2.943603992462158\n",
      "2.094484567642212 2.969001054763794\n",
      "1.9700525999069214 2.960155487060547\n",
      "2.067718744277954 2.9651386737823486\n",
      "1.9781973361968994 2.9522104263305664\n",
      "1.9733750820159912 2.947561264038086\n",
      "1.9835106134414673 2.9445083141326904\n",
      "2.13348126411438 2.9639694690704346\n",
      "1.8986924886703491 2.9410319328308105\n",
      "1.9732357263565063 2.946162223815918\n",
      "2.0721888542175293 2.9562039375305176\n",
      "2.0722413063049316 2.9568607807159424\n",
      "1.9495681524276733 2.958498239517212\n",
      "2.176407814025879 2.9738736152648926\n",
      "1.9390015602111816 2.953758478164673\n",
      "1.9975093603134155 2.9592833518981934\n",
      "1.9713490009307861 2.961587429046631\n",
      "2.0487396717071533 2.959946632385254\n",
      "2.004700183868408 2.9511539936065674\n",
      "2.03936767578125 2.9496965408325195\n",
      "2.028500556945801 2.947972297668457\n",
      "1.9692758321762085 2.943336248397827\n",
      "2.003793478012085 2.9455454349517822\n",
      "2.065652370452881 2.944352388381958\n",
      "1.9406359195709229 2.9362540245056152\n",
      "2.1242518424987793 2.951262950897217\n",
      "2.112290859222412 2.9511375427246094\n",
      "1.9887416362762451 2.935209035873413\n",
      "1.9309883117675781 2.9352073669433594\n",
      "1.92489755153656 2.93110990524292\n",
      "2.2289023399353027 2.9541385173797607\n",
      "1.8843672275543213 2.9174792766571045\n",
      "2.054089069366455 2.9346747398376465\n",
      "2.0191612243652344 2.9315578937530518\n",
      "1.9223841428756714 2.924464464187622\n",
      "2.0598161220550537 2.9375267028808594\n",
      "2.097796678543091 2.9430179595947266\n",
      "1.9935898780822754 2.942077159881592\n",
      "2.0224173069000244 2.9396634101867676\n",
      "1.9482266902923584 2.9315483570098877\n",
      "1.937982439994812 2.928685188293457\n",
      "2.1987245082855225 2.937443971633911\n",
      "1.9975415468215942 2.9227356910705566\n",
      "2.0466458797454834 2.927067995071411\n",
      "2.069268226623535 2.9232213497161865\n",
      "1.9230828285217285 2.9106345176696777\n",
      "1.9508107900619507 2.909841299057007\n",
      "2.021503448486328 2.91610050201416\n",
      "1.961921215057373 2.9118850231170654\n",
      "1.9584280252456665 2.9125821590423584\n",
      "1.997512936592102 2.913243532180786\n",
      "1.9053274393081665 2.912370443344116\n",
      "2.026196002960205 2.9255359172821045\n",
      "2.1334681510925293 2.9297187328338623\n",
      "1.9193838834762573 2.904585838317871\n",
      "2.0956335067749023 2.924245595932007\n",
      "2.1230568885803223 2.9235899448394775\n",
      "2.0604681968688965 2.9136838912963867\n",
      "2.09336256980896 2.9164581298828125\n",
      "1.979079246520996 2.9080708026885986\n",
      "2.194185495376587 2.928363084793091\n",
      "2.103428840637207 2.921780824661255\n",
      "2.2002291679382324 2.927551746368408\n",
      "2.108764171600342 2.915928840637207\n",
      "2.038780450820923 2.904392719268799\n",
      "1.9714763164520264 2.9030535221099854\n",
      "2.1133813858032227 2.9168522357940674\n",
      "2.027721881866455 2.9126932621002197\n",
      "2.008802890777588 2.9130778312683105\n",
      "2.09254789352417 2.923571825027466\n",
      "2.0029308795928955 2.913278818130493\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.01367449760437 2.9147090911865234\n",
      "1.8741815090179443 2.90959095954895\n",
      "2.038926839828491 2.9166436195373535\n",
      "2.0279541015625 2.924976110458374\n",
      "2.078155040740967 2.9305503368377686\n",
      "2.197897434234619 2.937199592590332\n",
      "1.9900574684143066 2.92812442779541\n",
      "1.9921951293945312 2.9268949031829834\n",
      "2.0784900188446045 2.931715250015259\n",
      "2.1693294048309326 2.936490297317505\n",
      "1.8284865617752075 2.9170234203338623\n",
      "2.111097574234009 2.9404990673065186\n",
      "1.9776719808578491 2.9266769886016846\n",
      "1.9760936498641968 2.9213778972625732\n",
      "1.9660120010375977 2.9165186882019043\n",
      "2.077286958694458 2.922334909439087\n",
      "2.1201162338256836 2.931119918823242\n",
      "1.9148967266082764 2.9168050289154053\n",
      "2.268702983856201 2.942678689956665\n",
      "2.0556554794311523 2.9236974716186523\n",
      "1.9606881141662598 2.918458938598633\n",
      "1.8456883430480957 2.9059300422668457\n",
      "1.9661165475845337 2.9072625637054443\n",
      "2.019636631011963 2.91255259513855\n",
      "1.9026262760162354 2.902273416519165\n",
      "1.9738881587982178 2.9071528911590576\n",
      "1.956581950187683 2.901771306991577\n",
      "1.9612133502960205 2.9046545028686523\n",
      "2.0304198265075684 2.9115405082702637\n",
      "2.0511813163757324 2.908334493637085\n",
      "2.040623903274536 2.9048657417297363\n",
      "2.0700674057006836 2.912320375442505\n",
      "1.8707737922668457 2.9028875827789307\n",
      "2.0177810192108154 2.9096882343292236\n",
      "2.025606155395508 2.911501407623291\n"
     ]
    }
   ],
   "source": [
    "for i in range(200000):\n",
    "    x,y=get_fake_data()\n",
    "    # forward\n",
    "    y_pred=x.mm(w)+b.expand_as(y)\n",
    "    loss=0.5*(y_pred-y)**2\n",
    "    loss=loss.sum()\n",
    "    \n",
    "    # backward\n",
    "    dloss=1\n",
    "    dy_pred=dloss*(y_pred-y)\n",
    "    \n",
    "    dw=x.t().mm(dy_pred)\n",
    "    db=dy_pred.sum()\n",
    "    \n",
    "    w.sub_(lr*dw)\n",
    "    b.sub_(lr*db)\n",
    "    \n",
    "    if i%1000==0:\n",
    "        display.clear_output(wait=True)\n",
    "        x=t.arange(0,20).view(-1,1)\n",
    "        y=x.mm(w)+b.expand_as(x)\n",
    "        plt.plot(x.numpy(),y.numpy())\n",
    "        \n",
    "        x2,y2=get_fake_data(batch_size=20)\n",
    "        plt.scatter(x2.numpy(),y2.numpy())\n",
    "        \n",
    "        plt.xlim(0,20)\n",
    "        plt.ylim(0,41)\n",
    "        plt.show()\n",
    "        plt.pause(0.5)\n",
    "    print(w.squeeze()[0],b.squeeze()[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
